/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package cl.orientesalud.dao.impl;

import cl.orientesalud.dao.Dao;
import cl.orientesalud.dao.TipoTratamientoDao;
import cl.orientesalud.dominio.TipoTratamiento;
import cl.orientesalud.util.OrienteLog;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import org.apache.log4j.Logger;

/**
 *
 * @author nicolas
 */
public class TipoTratamientoDaoImpl extends Dao implements TipoTratamientoDao{
    Logger logger=OrienteLog.obtenerLogger(TipoTratamientoDaoImpl.class);
    @Override
    public List<TipoTratamiento> obtenerTipoTratamientos() throws Exception{
        List<TipoTratamiento> tipos=null;
        PreparedStatement pstmt=null;
        TipoTratamiento tipo;
       ResultSet rs=null;
       String consulta="SELECT tt_id,"
               + "      tt_descripcion,"
               + "      tt_valor, "
               + "      tt_protesis "
               + "from tipo_tratamiento "
               + "order by tt_descripcion";
        try {
            pstmt = conexion.preparedStatement(consulta);
            rs=pstmt.executeQuery();
            tipos=new ArrayList();
            while(rs.next()){
                tipo=new TipoTratamiento();
                tipo.setId(rs.getInt("tt_id"));
                tipo.setDescripcion(rs.getString("tt_descripcion"));
                tipo.setValor(rs.getLong("tt_valor"));
                tipo.setProtesis(rs.getLong("tt_protesis"));
                tipos.add(tipo);
            }
        } catch (SQLException ex) {
            logger.error("Error:"+ex.getMessage());
            throw new Exception("Error en el sistema");
        }
       
        return tipos;
    }

    @Override
    public TipoTratamiento obtenerTipoTratamieno(TipoTratamiento tipoTratamiento) throws Exception {
        
        PreparedStatement pstmt=null;
        TipoTratamiento tipo = null;
       ResultSet rs=null;
       String consulta="SELECT tt_id,"
               + "      tt_descripcion,"
               + "      tt_valor,"
               + "      tt_protesis "
               + "from tipo_tratamiento "
               + "where tt_id=?";
        try {
            pstmt = conexion.preparedStatement(consulta);
            pstmt.setInt(1, tipoTratamiento.getId());
            rs=pstmt.executeQuery();
    
            while(rs.next()){
                tipo=new TipoTratamiento();
                tipo.setId(rs.getInt("tt_id"));
                tipo.setDescripcion(rs.getString("tt_descripcion"));
                tipo.setValor(rs.getLong("tt_valor"));
                tipo.setProtesis(rs.getLong("tt_protesis"));
                
            }
        } catch (SQLException ex) {
            logger.error("Error:"+ex.getMessage());
            throw new Exception("Error en el sistema");
        }
       
        return tipo;
    }

    @Override
    public void actualizarTipoTratamiento(TipoTratamiento tipoTratamiento) throws Exception {
        PreparedStatement pstmt=null;
        String sentencia="UPDATE TIPO_TRATAMIENTO "
                + "       SET tt_descripcion=?,"
                + "           tt_valor=?,"
                + "           tt_protesis=? "
                + "WHERE tt_id=?";
        try {
            pstmt = conexion.preparedStatement(sentencia);
            pstmt.setString(1, tipoTratamiento.getDescripcion());
            pstmt.setLong(2, tipoTratamiento.getValor());
            pstmt.setLong(3, tipoTratamiento.getProtesis());
            pstmt.setLong(4, tipoTratamiento.getId());
            pstmt.executeUpdate();
        } catch (SQLException ex) {
            logger.error("Error:"+ex.getMessage());
            throw new Exception("Error en el sistema");
        }
    }
    
}
